home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Cream of the Crop 26
/
Cream of the Crop 26.iso
/
doom
/
turric03.zip
/
TURRIC03.ZIP
/
PROGS
/
M-ZOMBIE.QC
< prev
next >
Wrap
Text File
|
1997-01-30
|
18KB
|
417 lines
/*
==============================================================================
ZOMBIE MORPH
==============================================================================
*/
$cd /raid/quake/id1/models/zombie
$origin 0 0 24
$base base
$skin skin
$frame stand1 stand2 stand3 stand4 stand5 stand6 stand7 stand8
$frame stand9 stand10 stand11 stand12 stand13 stand14 stand15
$frame walk1 walk2 walk3 walk4 walk5 walk6 walk7 walk8 walk9 walk10 walk11
$frame walk12 walk13 walk14 walk15 walk16 walk17 walk18 walk19
$frame run1 run2 run3 run4 run5 run6 run7 run8 run9 run10 run11 run12
$frame run13 run14 run15 run16 run17 run18
$frame atta1 atta2 atta3 atta4 atta5 atta6 atta7 atta8 atta9 atta10 atta11
$frame atta12 atta13
$frame attb1 attb2 attb3 attb4 attb5 attb6 attb7 attb8 attb9 attb10 attb11
$frame attb12 attb13 attb14
$frame attc1 attc2 attc3 attc4 attc5 attc6 attc7 attc8 attc9 attc10 attc11
$frame attc12
$frame paina1 paina2 paina3 paina4 paina5 paina6 paina7 paina8 paina9 paina10
$frame paina11 paina12
$frame painb1 painb2 painb3 painb4 painb5 painb6 painb7 painb8 painb9 painb10
$frame painb11 painb12 painb13 painb14 painb15 painb16 painb17 painb18 painb19
$frame painb20 painb21 painb22 painb23 painb24 painb25 painb26 painb27 painb28
$frame painc1 painc2 painc3 painc4 painc5 painc6 painc7 painc8 painc9 painc10
$frame painc11 painc12 painc13 painc14 painc15 painc16 painc17 painc18
$frame paind1 paind2 paind3 paind4 paind5 paind6 paind7 paind8 paind9 paind10
$frame paind11 paind12 paind13
$frame paine1 paine2 paine3 paine4 paine5 paine6 paine7 paine8 paine9 paine10
$frame paine11 paine12 paine13 paine14 paine15 paine16 paine17 paine18 paine19
$frame paine20 paine21 paine22 paine23 paine24 paine25 paine26 paine27 paine28
$frame paine29 paine30
$frame cruc_1 cruc_2 cruc_3 cruc_4 cruc_5 cruc_6
/* Morph to zombie */
void() player_zombie_stand = [ $stand1, player_stand1 ] {
if(self.walkframe >= 15)
self.walkframe = 0;
if(self.health < 75) self.health = self.health + 1; // Zombies regenerate
self.frame = $stand1 + self.walkframe;
self.walkframe = self.walkframe + 1;
};
void() player_zombie_run = [ $run1, player_run ] {
if(self.walkframe >= 19)
self.walkframe = 0;
self.frame = $run1 + self.walkframe;
self.walkframe = self.walkframe + 1;
};
////////////////////////////////////////////
// 12 frames of paina for player_zombie, going to stand
////////////////////////////////////////////
void() player_zombie_paina1 = [ $paina1, player_zombie_paina2 ] {self.attack_finished=time+10; self.movetype=MOVETYPE_NONE;};
void() player_zombie_paina2 = [ $paina2, player_zombie_paina3 ] { };
void() player_zombie_paina3 = [ $paina3, player_zombie_paina4 ] { };
void() player_zombie_paina4 = [ $paina4, player_zombie_paina5 ] { };
void() player_zombie_paina5 = [ $paina5, player_zombie_paina6 ] { };
void() player_zombie_paina6 = [ $paina6, player_zombie_paina7 ] { };
void() player_zombie_paina7 = [ $paina7, player_zombie_paina8 ] { };
void() player_zombie_paina8 = [ $paina8, player_zombie_paina9 ] { };
void() player_zombie_paina9 = [ $paina9, player_zombie_paina10 ] { };
void() player_zombie_paina10 = [ $paina10, player_zombie_paina11 ] { };
void() player_zombie_paina11 = [ $paina11, player_zombie_paina12 ] { };
void() player_zombie_paina12 = [ $paina12, player_stand1 ] {self.attack_finished=time; self.movetype=MOVETYPE_WALK;};
////////////////////////////////////////////
// 28 frames of painb for player_zombie, going to stand
////////////////////////////////////////////
void() player_zombie_painb1 = [ $painb1, player_zombie_painb2 ] {self.attack_finished=time+10; self.movetype=MOVETYPE_NONE;};
void() player_zombie_painb2 = [ $painb2, player_zombie_painb3 ] { };
void() player_zombie_painb3 = [ $painb3, player_zombie_painb4 ] { };
void() player_zombie_painb4 = [ $painb4, player_zombie_painb5 ] { };
void() player_zombie_painb5 = [ $painb5, player_zombie_painb6 ] { };
void() player_zombie_painb6 = [ $painb6, player_zombie_painb7 ] { };
void() player_zombie_painb7 = [ $painb7, player_zombie_painb8 ] { };
void() player_zombie_painb8 = [ $painb8, player_zombie_painb9 ] { };
void() player_zombie_painb9 = [ $painb9, player_zombie_painb10 ] { };
void() player_zombie_painb10 = [ $painb10, player_zombie_painb11 ] { };
void() player_zombie_painb11 = [ $painb11, player_zombie_painb12 ] { };
void() player_zombie_painb12 = [ $painb12, player_zombie_painb13 ] { };
void() player_zombie_painb13 = [ $painb13, player_zombie_painb14 ] { };
void() player_zombie_painb14 = [ $painb14, player_zombie_painb15 ] { };
void() player_zombie_painb15 = [ $painb15, player_zombie_painb16 ] { };
void() player_zombie_painb16 = [ $painb16, player_zombie_painb17 ] { };
void() player_zombie_painb17 = [ $painb17, player_zombie_painb18 ] { };
void() player_zombie_painb18 = [ $painb18, player_zombie_painb19 ] { };
void() player_zombie_painb19 = [ $painb19, player_zombie_painb20 ] { };
void() player_zombie_painb20 = [ $painb20, player_zombie_painb21 ] { };
void() player_zombie_painb21 = [ $painb21, player_zombie_painb22 ] { };
void() player_zombie_painb22 = [ $painb22, player_zombie_painb23 ] { };
void() player_zombie_painb23 = [ $painb23, player_zombie_painb24 ] { };
void() player_zombie_painb24 = [ $painb24, player_zombie_painb25 ] { };
void() player_zombie_painb25 = [ $painb25, player_zombie_painb26 ] { };
void() player_zombie_painb26 = [ $painb26, player_zombie_painb27 ] { };
void() player_zombie_painb27 = [ $painb27, player_zombie_painb28 ] { };
void() player_zombie_painb28 = [ $painb28, player_stand1 ] {self.attack_finished=time; self.movetype=MOVETYPE_WALK;};
////////////////////////////////////////////
// 18 frames of painc for player_zombie, going to stand
////////////////////////////////////////////
void() player_zombie_painc1 = [ $painc1, player_zombie_painc2 ] {self.attack_finished=time+10; self.movetype=MOVETYPE_NONE;};
void() player_zombie_painc2 = [ $painc2, player_zombie_painc3 ] { };
void() player_zombie_painc3 = [ $painc3, player_zombie_painc4 ] { };
void() player_zombie_painc4 = [ $painc4, player_zombie_painc5 ] { };
void() player_zombie_painc5 = [ $painc5, player_zombie_painc6 ] { };
void() player_zombie_painc6 = [ $painc6, player_zombie_painc7 ] { };
void() player_zombie_painc7 = [ $painc7, player_zombie_painc8 ] { };
void() player_zombie_painc8 = [ $painc8, player_zombie_painc9 ] { };
void() player_zombie_painc9 = [ $painc9, player_zombie_painc10 ] { };
void() player_zombie_painc10 = [ $painc10, player_zombie_painc11 ] { };
void() player_zombie_painc11 = [ $painc11, player_zombie_painc12 ] { };
void() player_zombie_painc12 = [ $painc12, player_zombie_painc13 ] { };
void() player_zombie_painc13 = [ $painc13, player_zombie_painc14 ] { };
void() player_zombie_painc14 = [ $painc14, player_zombie_painc15 ] { };
void() player_zombie_painc15 = [ $painc15, player_zombie_painc16 ] { };
void() player_zombie_painc16 = [ $painc16, player_zombie_painc17 ] { };
void() player_zombie_painc17 = [ $painc17, player_zombie_painc18 ] { };
void() player_zombie_painc18 = [ $painc18, player_stand1 ] {self.attack_finished=time; self.movetype=MOVETYPE_WALK;};
////////////////////////////////////////////
// 13 frames of paind for player_zombie, going to stand
////////////////////////////////////////////
void() player_zombie_paind1 = [ $paind1, player_zombie_paind2 ] {self.attack_finished=time+10; self.movetype=MOVETYPE_NONE;};
void() player_zombie_paind2 = [ $paind2, player_zombie_paind3 ] { };
void() player_zombie_paind3 = [ $paind3, player_zombie_paind4 ] { };
void() player_zombie_paind4 = [ $paind4, player_zombie_paind5 ] { };
void() player_zombie_paind5 = [ $paind5, player_zombie_paind6 ] { };
void() player_zombie_paind6 = [ $paind6, player_zombie_paind7 ] { };
void() player_zombie_paind7 = [ $paind7, player_zombie_paind8 ] { };
void() player_zombie_paind8 = [ $paind8, player_zombie_paind9 ] { };
void() player_zombie_paind9 = [ $paind9, player_zombie_paind10 ] { };
void() player_zombie_paind10 = [ $paind10, player_zombie_paind11 ] { };
void() player_zombie_paind11 = [ $paind11, player_zombie_paind12 ] { };
void() player_zombie_paind12 = [ $paind12, player_zombie_paind13 ] { };
void() player_zombie_paind13 = [ $paind13, player_stand1 ] {self.attack_finished=time; self.movetype=MOVETYPE_WALK;};
////////////////////////////////////////////
// 30 frames of paine for player_zombie, going to stand
////////////////////////////////////////////
void() player_zombie_paine1 = [ $paine1, player_zombie_paine2 ] {self.attack_finished=time+10; self.movetype=MOVETYPE_NONE;};
void() player_zombie_paine2 = [ $paine2, player_zombie_paine3 ] { };
void() player_zombie_paine3 = [ $paine3, player_zombie_paine4 ] { };
void() player_zombie_paine4 = [ $paine4, player_zombie_paine5 ] { };
void() player_zombie_paine5 = [ $paine5, player_zombie_paine6 ] { };
void() player_zombie_paine6 = [ $paine6, player_zombie_paine7 ] { };
void() player_zombie_paine7 = [ $paine7, player_zombie_paine8 ] { };
void() player_zombie_paine8 = [ $paine8, player_zombie_paine9 ] { };
void() player_zombie_paine9 = [ $paine9, player_zombie_paine10 ] { };
void() player_zombie_paine10 = [ $paine10, player_zombie_paine11 ] { };
void() player_zombie_paine11 = [ $paine11, player_zombie_paine12 ] { };
void() player_zombie_paine12 = [ $paine12, player_zombie_paine13 ] { };
void() player_zombie_paine13 = [ $paine13, player_zombie_paine14 ] { };
void() player_zombie_paine14 = [ $paine14, player_zombie_paine15 ] { };
void() player_zombie_paine15 = [ $paine15, player_zombie_paine16 ] { };
void() player_zombie_paine16 = [ $paine16, player_zombie_paine17 ] { };
void() player_zombie_paine17 = [ $paine17, player_zombie_paine18 ] { };
void() player_zombie_paine18 = [ $paine18, player_zombie_paine19 ] { };
void() player_zombie_paine19 = [ $paine19, player_zombie_paine20 ] { };
void() player_zombie_paine20 = [ $paine20, player_zombie_paine21 ] { };
void() player_zombie_paine21 = [ $paine21, player_zombie_paine22 ] { };
void() player_zombie_paine22 = [ $paine22, player_zombie_paine23 ] { };
void() player_zombie_paine23 = [ $paine23, player_zombie_paine24 ] { };
void() player_zombie_paine24 = [ $paine24, player_zombie_paine25 ] { };
void() player_zombie_paine25 = [ $paine25, player_zombie_paine26 ] { };
void() player_zombie_paine26 = [ $paine26, player_zombie_paine27 ] { };
void() player_zombie_paine27 = [ $paine27, player_zombie_paine28 ] { };
void() player_zombie_paine28 = [ $paine28, player_zombie_paine29 ] { };
void() player_zombie_paine29 = [ $paine29, player_zombie_paine30 ] { };
void() player_zombie_paine30 = [ $paine30, player_stand1 ] {self.attack_finished=time; self.movetype=MOVETYPE_WALK;};
//** PATCH_BEGIN - morph2 - Turrican ****
void(entity attacker, float take) player_zombie_pain =
{
if(self.health < 70)
self.health=70;
if(self.pain_finished > time)
return;
// if(random()>0.50) sound (self, CHAN_VOICE, "zombie/z_pain.wav", 1, ATTN_NORM);
// else sound(self, CHAN_VOICE, "zombie/z_pain1.wav", 1, ATTN_NORM);
PainSound();
if(take > 60)
{
if(random()>0.50)
{
player_zombie_paine1();
self.pain_finished = time + 2.9;
self.attack_finished = time + 2.9;
}
else
{
player_zombie_painb1();
self.pain_finished = time + 2.7;
self.attack_finished = time + 2.7;
}
}
else
{
if(random()>0.66)
{
player_zombie_paina1();
self.pain_finished = time + 1.1;
self.attack_finished = time + 1.1;
}
else if(random()>0.5)
{
player_zombie_painc1();
self.pain_finished = time + 1.7;
self.attack_finished = time + 1.7;
}
else
{
player_zombie_paind1();
self.pain_finished = time + 1.2;
self.attack_finished = time + 1.2;
}
}
};
//** PATCH_END - morph2 - Turrican ******
void() player_zombie_jump = {
// Zombies can't jump
};
void() player_ZombieFireGrenade =
{
local entity missile, mpuff;
sound (self, CHAN_WEAPON, "zombie/z_shot1.wav", 1, ATTN_NORM);
self.punchangle_x = -2;
missile = spawn ();
missile.owner = self;
missile.movetype = MOVETYPE_BOUNCE;
missile.solid = SOLID_BBOX;
missile.classname = "grenade";
// set missile speed
makevectors (self.v_angle);
if(self.v_angle_x)
missile.velocity = v_forward*600 + v_up * 200 + crandom()*v_right*10 + crandom()*v_up*10;
else {
missile.velocity = aim(self, 10000);
missile.velocity = missile.velocity * 600;
missile.velocity_z = 200;
}
missile.avelocity = '3000 1000 2000';
missile.angles = vectoangles(missile.velocity);
missile.touch = ZombieGrenadeTouch;
// set missile duration
missile.nextthink = time + 2.5;
missile.think = SUB_Remove;
setmodel (missile, "progs/zom_gib.mdl");
setsize (missile, '0 0 0', '0 0 0');
setorigin (missile, self.origin);
};
////////////////////////////////////////////
// 13 frames of atta for player_zombie, going to stand
////////////////////////////////////////////
void() player_zombie_atta1 = [ $atta1, player_zombie_atta2 ] { };
void() player_zombie_atta2 = [ $atta2, player_zombie_atta3 ] { };
void() player_zombie_atta3 = [ $atta3, player_zombie_atta4 ] { };
void() player_zombie_atta4 = [ $atta4, player_zombie_atta5 ] { };
void() player_zombie_atta5 = [ $atta5, player_zombie_atta6 ] { };
void() player_zombie_atta6 = [ $atta6, player_zombie_atta7 ] { };
void() player_zombie_atta7 = [ $atta7, player_zombie_atta8 ] { };
void() player_zombie_atta8 = [ $atta8, player_zombie_atta9 ] { };
void() player_zombie_atta9 = [ $atta9, player_zombie_atta10 ] { };
void() player_zombie_atta10 = [ $atta10, player_zombie_atta11 ] { };
void() player_zombie_atta11 = [ $atta11, player_zombie_atta12 ] { };
void() player_zombie_atta12 = [ $atta12, player_zombie_atta13 ] { };
void() player_zombie_atta13 = [ $atta13, player_stand1 ] { player_ZombieFireGrenade(); self.attack_finished=time; };
////////////////////////////////////////////
// 14 frames of attb for player_zombie, going to stand
////////////////////////////////////////////
void() player_zombie_attb1 = [ $attb1, player_zombie_attb2 ] { };
void() player_zombie_attb2 = [ $attb2, player_zombie_attb3 ] { };
void() player_zombie_attb3 = [ $attb3, player_zombie_attb4 ] { };
void() player_zombie_attb4 = [ $attb4, player_zombie_attb5 ] { };
void() player_zombie_attb5 = [ $attb5, player_zombie_attb6 ] { };
void() player_zombie_attb6 = [ $attb6, player_zombie_attb7 ] { };
void() player_zombie_attb7 = [ $attb7, player_zombie_attb8 ] { };
void() player_zombie_attb8 = [ $attb8, player_zombie_attb9 ] { };
void() player_zombie_attb9 = [ $attb9, player_zombie_attb10 ] { };
void() player_zombie_attb10 = [ $attb10, player_zombie_attb11 ] { };
void() player_zombie_attb11 = [ $attb11, player_zombie_attb12 ] { };
void() player_zombie_attb12 = [ $attb12, player_zombie_attb13 ] { };
void() player_zombie_attb13 = [ $attb12, player_zombie_attb14 ] { };
void() player_zombie_attb14 = [ $attb14, player_stand1 ] { player_ZombieFireGrenade(); self.attack_finished=time; };
////////////////////////////////////////////
// 12 frames of attc for player_zombie, going to stand
////////////////////////////////////////////
void() player_zombie_attc1 = [ $attc1, player_zombie_attc2 ] { };
void() player_zombie_attc2 = [ $attc2, player_zombie_attc3 ] { };
void() player_zombie_attc3 = [ $attc3, player_zombie_attc4 ] { };
void() player_zombie_attc4 = [ $attc4, player_zombie_attc5 ] { };
void() player_zombie_attc5 = [ $attc5, player_zombie_attc6 ] { };
void() player_zombie_attc6 = [ $attc6, player_zombie_attc7 ] { };
void() player_zombie_attc7 = [ $attc7, player_zombie_attc8 ] { };
void() player_zombie_attc8 = [ $attc8, player_zombie_attc9 ] { };
void() player_zombie_attc9 = [ $attc9, player_zombie_attc10 ] { };
void() player_zombie_attc10 = [ $attc10, player_zombie_attc11 ] { };
void() player_zombie_attc11 = [ $attc11, player_zombie_attc12 ] { };
void() player_zombie_attc12 = [ $attc12, player_stand1 ] { player_ZombieFireGrenade(); self.attack_finished=time; };
void() player_zombie_attack = {
self.attack_finished=time+10;
if(random()>0.66) player_zombie_atta1();
else if(random()>0.5) player_zombie_attb1();
else player_zombie_attc1();
};
void() player_zombie_impulse = {
// Zombie has only one weapon
};
string() player_zombie_killmsg = {
return " was splatted to death by ";
};
string() player_zombie_killmsg2 = {
return ".\n";
};
void() player_zombie_become = {
//** PATCH_BEGIN - morph2 - Turrican ****
// bprint(self.netname);
// bprint(" has become a zombie.\n");
sprint( self, "You have become a zombie.\n");
// Stop the morph from flying.
if (self.flags & FL_FLY)
{
localcmd("fly");
self.flags = self.flags - FL_FLY;
}
//** PATCH_END - morph2 - Turrican ******
self._stand=player_zombie_stand;
self._run=player_zombie_run;
self._pain=player_zombie_pain;
//** PATCH_BEGIN - morph2 - Turrican ****
self._jump=SUB_Null; // Now zombies can jump.
self._jump2=SUB_Null;
//** PATCH_END - morph2 - Turrican ******
self._attack=player_zombie_attack;
self._impulse=player_zombie_impulse;
self._can_get_p=SUB_False;
self._killmsg=player_zombie_killmsg;
self._killmsg2=player_zombie_killmsg2;
setmodel(self,"progs/zombie.mdl");
self.modelindex_morph=self.modelindex;
self.weaponmodel="";
self.view_ofs = '0 0 22';
if(!deathmatch) setsize (self, VEC_HULL_MIN, VEC_HULL_MAX);
else setsize (self, '-16 -16 -24', '16 16 40');
self.health = self.health * 0.75 / self.health_modifier;
self.health_modifier = 0.75;
makevectors(self.v_angle);
spawn_tfog(self.origin + 20 * v_forward);
DropBackpack2();
//** PATCH_BEGIN - morph2 - Turrican ****
self.currentammo=0;
// Make morphs ignore player colors.
if (self.colormap != 0)
{
self.temp_colormap = self.colormap;
self.colormap = 0;
}
// Make morphs ignore player skins.
if (self.skin != 0)
{
self.temp_skin = self.skin;
self.skin = 0;
}
//** PATCH_END - morph2 - Turrican ******
};